//
//  HomeTableViewController.swift
//  HJWeibo
//
//  Created by mac on 16/1/10.
//  Copyright © 2016年 mac. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

private let HomeCell = "HomeCell"
class HomeTableViewController: BaseTableViewController {
    
    //模型数据
    private lazy var statuseList = [HJStatus]()
    
    

    override func viewDidLoad() {
        super.viewDidLoad()
        if !userLogin {
            visitorLoginView?.setupUIWithInfo(nil, tipText: "关注一些人，回这里看看有什么惊喜")
            //一定要 return
            
            return
        }
        //1.准备tableView
        prepareTableView()
        
        //2.加载数据
        loadData()

       
    }
    
    //准备tableView
    private func prepareTableView() {
        //OC中: [UITableViewCell class]
        //swift中: UITableViewCell.self
        //注册cell
        self.tableView.registerClass(HJStatusCell.self, forCellReuseIdentifier: HomeCell)
    }
    
    
    //加载首页数据
    private func loadData() {
        
        //url
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        //在字典中添加一个可选项
        guard let token = HJUserAccountViewModel().token else {
            print("用户暂未登录")
            SVProgressHUD.showErrorWithStatus("请重新登录")
            return
        }
        let parameters = ["access_token" : token]
        let AFN = AFHTTPSessionManager()
        
        AFN.GET(urlString, parameters: parameters, progress: nil, success: { (_, result) -> Void in
            //转换为字典格式
            guard let dict = result as? [String : AnyObject] else {
                
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print("数据结构错误")
                return
            }
            
            guard let array = dict["statuses"] as? [[String : AnyObject]] else {
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print("数据结构错误")
                return
            }
            
            //定义容器数组
            var tempArray = [HJStatus]()
            //获取必选的 字典数组
            //遍历数组，做字典转模型
            for item in array {
                let s = HJStatus(dict: item)
                //添加元素
                tempArray.append(s)
            }
            
            self.statuseList = tempArray
            self.tableView.reloadData()
            
            
            }) { (_, error) -> Void in
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print(error)
        }
        
        
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
//    //模拟网络请求
//    func demo() {
//        
//        let urlSrting = "http://www.weather.com.cn/data/sk/101010100.html"
//        
//        //NSLocalizedDescription=Request failed: unacceptable content-type: text/html
//        //使用AFN 最常见的错误之一
//        //@"application/json", @"text/json", @"text/javascript"
//        //获取网络请求的对象
//        let AFN = AFHTTPSessionManager()
//        //设置反序列化支持格式
//        AFN.responseSerializer.acceptableContentTypes?.insert("text/html")
//       
//        //调用对应网络请求请求方法
//        //使用 字典 来进行参数的传递
//        //1.网络请求前，显示指示器
//        SVProgressHUD.showInfoWithStatus("正在加载网络数据...")
//        AFN.GET(urlSrting, parameters: nil, progress: nil, success: { (task, result) -> Void in
//        NSThread.sleepForTimeInterval(3)
//            SVProgressHUD.dismiss()
//            print(result)
//            }) { (task, error) -> Void in
//                SVProgressHUD.showErrorWithStatus("请检查网络")
//                print(error)
//        }
//        
//        
//    }
//    
//    
    

}


//在扩展中实现tableView 的数据源方法
extension HomeTableViewController {
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.statuseList.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //手写代码 必须手动注册 cell
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCell, forIndexPath: indexPath) as! HJStatusCell
        //显示文案
        cell.textLabel?.text = self.statuseList[indexPath.row].user?.name
        return cell
    }
    
    
    
}
